package controller;

import java.io.IOException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.User;

/**
 *
 * @author Sergio
 */
public class MailServlet extends MyCoolServlet {

    @Override
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
          try {
            HttpSession s = request.getSession();
            User u = (User) s.getAttribute("usuario");
            Properties propiedades = new Properties();

            // Nombre del host de correo, es smtp.gmail.com
            propiedades.setProperty("mail.smtp.host", "smtp.gmail.com");

            // TLS si estÃ¡ disponible
            propiedades.setProperty("mail.smtp.starttls.enable", "true");

            // Puerto de gmail para envio de correos
            propiedades.setProperty("mail.smtp.port", "25");

            // Nombre del usuario
            propiedades.setProperty("mail.smtp.user", "appbuy.lpi@gmail.com");

            // Si requiere o no usuario y password para conectarse.
            propiedades.setProperty("mail.smtp.auth", "true");
            propiedades.setProperty("mail.smtp.localhost", "localhost");


            Session sesionMail = Session.getDefaultInstance(propiedades);
            sesionMail.setDebug(true);
            //Creamos el cuerpo del mensaje
            Message mensaje = new MimeMessage(sesionMail);

            mensaje.setSentDate(new java.util.Date(System.currentTimeMillis()));
            mensaje.addHeader("Content-Type", "text/html");
            // QuiÃ©n envÃ­a
            mensaje.setFrom(new InternetAddress("appbuy.lpi@gmail.com"));
            /**
             * QuiÃ©n es el destinatario
             * Hay que tomarlo desde el formulario que rellena al registrarse
             */
            mensaje.setRecipient(Message.RecipientType.TO, new InternetAddress(u.getCorreo()));

            mensaje.setSubject("Registro appBuy");
            mensaje.setText("Se ha registrado correctamente en appBuy!" +
                    "\n\n Datos de usuario:\n\n  · Usuario: " + u.getUsuario() +
                    "\n  · Password: " + u.getPassword() + "\n  · Correo: " +
                    u.getCorreo() + "\n  · Nombre: " +
                    u.getNombre() + "\n  · Apellido/s: " + u.getApellido() +
                    "\n  · Dirección: " + u.getDireccion() + "\n  · Método de pago: "
                    + u.getPago() + "\n\n\n Gracias por confiar en nosotros!");

            Transport transporte = sesionMail.getTransport("smtp");

            transporte.connect("appbuy.lpi@gmail.com", "appbuylpi");
            // Se envÃ­a el mail.
            transporte.sendMessage(mensaje, mensaje.getAllRecipients());
            transporte.close();
            String message = (String) request.getAttribute("message");
            message += "\n\n Ha recibido un mail con los datos de su cuenta.";
            request.setAttribute("message", message);
            gotoURL(successForm, request, response);
        } catch (Exception e) {
            log("No se ha podido mandar el mail: ", e);
            gotoURL(successForm, request, response);
        }
    }
}